package com.oyesgo.statistics.regex;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CopyOfRegexHelp {

	/**
	 * 验证传入的字符串是否整个匹配正表达式
	 * @param regex: 正则表达式
	 * @param decStr：要匹配的字符串
	 * @return ：若匹配，则返回true;否则，返回false;
	 */
	public static boolean validate(String regex, String decStr) {
		// 表达式对象
		Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		// 创建 Matcher 对象
		Matcher m = p.matcher(decStr);  
		// 是否完全匹配
//		boolean yesorno = m.matches();   //该方法尝试将整个输入序列与该模式匹配
		boolean yesorno = m.find();   //该方法尝试是否有子序列匹配该模式
		return yesorno;
	}
	/**
	 * 给定字符串中是否有符合给定正则表达式的子字符串，返回匹配的第一个子字符串
	 * @param regex：正则表达式
	 * @param decStr：要匹配的字符串
	 * @return :返回匹配的第一个字符串，若不匹配则 返回 ""
	 */
	public static String search(String regex, String decStr) {
		// 表达式对象
		Pattern p = Pattern.compile(regex);
		// 创建 Matcher 对象
		Matcher m = p.matcher(decStr);  
		// 是否找到匹配
		boolean found = m.find();  //该方法扫描输入序列以查找与该模式匹配的下一个子序列。
		String foundstring="";
		if(found){
		    foundstring = m.group(0);
		}
		
		return foundstring;
	}	

	/**
	 * 返回给定字符串中匹配给定正则表达式所有子字符串
	 * @param regex
	 * @param decStr
	 * @return List：返回所有匹配正则表达式的子字符串
	 */
	public static List searchSubStr(String regex,String decStr) {
		// 表达式对象
		Pattern p = Pattern.compile(regex);
		// 创建 Matcher 对象
		Matcher m = p.matcher(decStr);  
		List list = new ArrayList();
		while(m.find()){   
			list.add(m.group());
		}
		return list;
	}	
	/**
	 * 替换给定字符串中匹配正则表达式的子字符串
	 * @param regex：正则表达式
	 * @param decStr：所要匹配的字符串
	 * @param replaceStr：将符合正则表达式的子串替换为该字符串
	 * @return：返回替换以后新的字符串
	 */
	public static String replace(String regex,String decStr,String replaceStr) {
		// 表达式对象
		Pattern p = Pattern.compile(regex);
		// 创建 Matcher 对象
		Matcher m = p.matcher(decStr);
		// 替换
		String newstring = m.replaceAll(replaceStr);
		System.out.println(newstring);
		return newstring;
	}	

	public static void testSplit() {
		String str = "abc5Adefghi7Ajklmn";
		// 分割
		String [] strs = str.split("(\\d)(A)");
		for(int i=0;i<strs.length;i++) {
			System.out.println(strs[i]);
		}
	}	
	public static void main(String[] args){
//		System.out.println(replace("(\\d+)([a-z]+)","2342sdfds&*&^*45654tyuytut^^**^","{}"));
		
		/**
		 * <![CDATA[
http://122.49.26.44//adsfile/1D6795D8D1F6D1806D5409C926F5B434/icon.jpg?07221755154215009256
]]>
		 */
		String str = "<![CDATA[http://122.49.26.44//adsfile/1D6795D8D1F6D1806D5409C926F5B434/icon.jpg?07221755154215009256]]>";
		String reg = "http://.+>=]";
		String newStr = search(reg, str);
		System.out.println(newStr);
		
		
	}
	
}